import { Player } from '/static/js/Player/base.js';
import { GIF } from '/static/js/utils/gif.js';

// 定义 Kyo 类，继承自 Player
export class Kyo extends Player {
    // 构造函数，接收两个参数：root（游戏根对象）和 info（玩家角色的初始信息）
    constructor(root, info) {
        super(root, info); // 调用父类的构造函数，初始化角色的基本信息
        this.init_animation(); // 初始化动画
    }

    // 初始化动画方法
    init_animation() {
        let outer = this; // 保存当前类的引用，用于回调函数中访问实例属性
        let offsets = [0, -22, -22, -100, 0, 0, 0];//每个动画不在同一高度，设置偏移量
        for (let i = 0; i < 7; i++) { // 遍历 7 种动画状态（例如：站立、行走、攻击等）
            let gif = GIF(); // 创建一个 GIF 对象
            gif.load(`/static/images/player/kyo/${i}.gif`); // 加载对应编号的 GIF 文件
            this.animations.set(i, {
                gif: gif,
                frame_cnt: 0,  // 总图片数
                frame_rate: 5,  // 每5帧过度一次
                offset_y: offsets[i],  // y方向偏移量
                loaded: false,  // 是否加载完整
                scale: 2,  // 放大多少倍
            });
            gif.onload = () => { // 设置 GIF 加载完成后的回调函数
                let obj = outer.animations.get(i); // 获取当前动画状态的对象
                obj.frame_cnt = gif.frames.length; // 更新帧数为 GIF 的总帧数
                obj.loaded = true; // 标记为已加载

                // 如果当前动画状态的索引 i 等于 3，单独设置该状态下的 frame_rate 为 4，即调整该动画状态下的播放速度，使其每 4 帧过渡一次，为了让这个特定状态的动画效果更符合预期，让跳跃动作看起来更流畅或者更有节奏感
                if (i === 3) {
                    obj.frame_rate = 4;
                }
            };
        }
    }
}